Due to the large amount of information processed by present day computer systems, there is a trend to couple a disk storage subsystem to a host computer to thus increase the data storage capability and efficiency of the host computer.
Disk storage subsystems typically include a disk controller and one or more disk drives. The disk controller includes a controller microprocessor coupled to a host interface circuit and a disk interface circuit. The controller microprocessor generally coordinates and controls the transfer of data from the host computer to the disk storage subsystem and vice-versa.
As is known, the increasing performance characteristics of central processor units (CPUs) and memories in host computers has not generally been matched by similar performance increases in disk storage subsystems. In particular, mechanical latency i.e. the time required to access data or instructions stored in the disk storage subsystem of a computer, has increasingly become the factor which prevents the full realization of the speed of contemporary computer systems. This result is occurring because the speed of CPUs has outstripped the speed with which disk storage subsystems can provide data to a host.
The longer it takes to obtain data from the disk storage subsystem, the slower a host CPU runs because CPUs usually remain idle while waiting for data. Thus, one negative effect of disk latency is its effect on CPU speed.
This negative effect has increased as CPU speed has outstripped disk subsystem speed. Thus, despite the advances made in high density, high speed disk storage subsystems, disk storage subsystems typically remain the speed limiting link in a computer system. One way to reduce average latency in a disk storage subsystem is to add a cache memory to the disk storage subsystem.
A cache memory generally includes a relatively small memory device physically situated proximate the disk controller of the disk storage subsystem. The caching method is software controlled. Due to the physical proximity of the cache memory to the disk controller and the nature of the cache memory control, latency of the cache memory is several times less than the latency of the disk drives. Since cache memory latency is much less than disk drive latency, overall system speed is improved in disk storage subsystems that include a cache memory.
Cache memories capitalize on the characteristic that once a host computer reads data from or writes data to the disk drives, it is very likely that this data will be reused by the host computer in the near future. For simplicity of description, data, instructions and any other forms of information commonly stored in computer memories are collectively hereinafter referred to as data. Thus, frequently used data or instructions are replicated in cache memories.
When the host computer initiates a data write operation for example, the data is first stored in the cache memory and then subsequently stored on the disk drives. If the host computer later requests the same data, the data may thus be retrieved from the cache memory rather than from a disk drive.
Retrieving data from the cache memory avoids the necessity of accessing one or more disk drives of the disk storage subsystem which are relatively slow compared to the cache memory. Therefore data retrieval is accomplished more rapidly which in turn leads to an overall increase in system performance.
While disk storage subsystems that include a cache memory have a number of advantages, one disadvantage is the expense of cache memories. This disadvantage is amplified because a cache memory does not add memory capacity to disk storage subsystem. Rather, cache memories are add-ons to disk memory, because, as noted above cache memories replicate data stored in the disk drives of the disk storage subsystem.
Another problem which arises with cache memories is the need to maintain coherency between data stored in the cache memory and data stored on the disk drives of the disk storage subsystem. More specifically, since data stored at either location can be updated, a disk storage subsystem that includes a cache memory must also include a technique for maintaining coherency between the same data stored in the cache memory and the disk drives. If coherency is not maintained, data at one memory location may become stale and the same data at another memory location may be updated. The subsequent use of stale or corrupt data in the computer system can lead to errors.
Several different types of cache management techniques have been developed to control the process which occurs when data stored in a cache memory are updated. Generally, in response to a host processor initiated write operation, the write-data is written to the cache memory and then propagated directly to the disk drives. Cache memories throughout the disk storage subsystem are searched and any copies of written data are either invalidated or updated.
Another problem with cache memories is the volatile nature of the cache memories. That is, data stored in volatile cache memories is lost in the event of a power or device failure in the disk controller.
One solution to this problem is to provide the entire cache memory as a non-volatile cache memory. For example, the cache memory may include a battery back-up circuit which provides power to the cache memory in the event of a power failure. One problem with this approach, however, is the large expense involved in providing a cache memory having a battery circuit and a power sense circuit to detect when a power failure is occurring and that batteries should be engaged for back up operation. Moreover, such battery and power sense circuits lead to a relatively complex cache memory circuit design. Also the additional circuitry may reduce the reliability of the cache memory.
Furthermore, if the entire cache is provided as a non-volatile cache it is relatively difficult and expensive to duplicate the contents of the cache memory since it would be necessary to provide a second non-volatile cache memory having a memory size equal to or greater than first non-volatile cache memory so that the contents of the first non-volatile cache memory could be duplicated and stored to protect the contents before transfer to a drive disk.
It would be desirable, therefore, to provide a disk storage subsystem which includes a cache memory system which is relatively inexpensive, which minimizes the chance of corrupting data and which maintains the data integrity of the disk storage subsystem.